Project Policies
Each student must complete an individual (i.e., not group) final
project. In general, final projects must use OpenGL.
1 Topics
The following projects have been pre-approved: If you would like to
work on a project that is not listed below, you must get it
approved.
1.1 Science, Technology, Engineering and Math
Molecular Modeler
|
An application that displays 3D models of simple chemical compounds.
The user must be able to rotate the model in all three dimensions.
Bonds can be shown either as a "wireframe" or as 3D cylinders.
|
Virtual Worm
|
A 3D model of a worm that the user can "dissect".
|
Packet-Switched Network Simulation
|
A 3D visualization of the routing of packets in a
packet-switched network. The model must be able to:
read a network from a file, use a resonable routing algorithm, and
simulated dropped packets. The visualization must show (in
less-than-real-time) the movement of packets. The packets must
be color coded based on their destination.
|
Articulated Robot Arm Simulator
|
A simulation of an articulated robot arm that has four degrees
of freedom.
|
Visualization of Optimization Algorithms
|
A visualization of one (or more) numerical algorithms for solving
optimization problems with two decision variables. The visualization
must include a 3D representation of the function to optimize and the
iterations of the algorithm.
|
Bouncing Ball Simulation
|
A realistic 3D simulation of a bouncing ball in which the ball deforms
when it strikes the floor and returns to its original shape after it
rises up off of the floor.
|
1.2 James Madison University
Campus Terrain Model
|
An application that displays a 3D model of the terrain of the campus
(the data must be accurate; they are available from several sources)
and allows users to click on two points and find the distance between
them, including the total change in elevation.
|
Animated Duke Dog
|
A 3D model of the Duke Dog that walks around the screen,
following the mouse.
|
CS Department Walk Thru
|
An accurate 3D model of the second floor of the CS/ISAT
building with all offices, classrooms, etc... that the user
can "walk though" (using a first-person perspective).
|
1.3 Games
3D Space Cubes
|
A variant of the classic Asteroids games in which the asteroids
are 3D cubes (that break-up into smaller cubes) and the ship
is a 3D cone or pyramid. All objects must move in all three
dimensions. Objects that leave the screen must not return from
the opposite face.
|
3D Brick Basher
|
A variant of the classic Breakout game in which the bricks, ball,
and paddle are all 3D objects. The paddle must be able to move
in both the \([1, 0, 0]\) and \([0, 0, 1]\) directions
and the ball must move in all three dimensions.
|
3D Paddle Ball
|
A first-person paddle ball game in which the ball travels
principally in the \([0, 0, 1]\) direction.
The application must support both one-player (against the
computer) and two-player modes. Each player must have his/her
own window. The player must be able to move in both the
\([1, 0, 0]\) and \([0, 0, 1]\) directions.
|
3D First Person Snakes and Ladders Game
|
A 3D variant of the classic games
Snakes and Ladders. In this version, each player has a
first person view of the board from the perspective of her/his
token.
|
1.4 The Visual and Performing Arts
3D Music Notation
|
An application that can display a simple musical score in 3D.
Notes, the staff, etc... must all be 3D objects. The user
must be able to rotate the score and manipulate the individual
notes (e.g., move them up and down the staff, add flats/sharps, change
their length).
|
Theater Lighting Simulation
|
An application that allows the user to experiment with different
lighting setups.
|
1.5 The Social Sciences
U.S. Census Data Viewer
|
An application that allows users to draw 3D maps of the
United States in which the "height" of each state is determined by
socio-economic data (e.g., population density, median income,
housing starts).
|
Trade Data Viewer
|
An application that allows users to draw network representations of
international/interregional trade data. The size of the link
must be used to represent the volume of trade and the size of the
node must be used to represent the size of the region's/country's
economy. The application must be animated to show the changes
in these values over time.
|
1.6 The Humanities
3D Lexis Pencil Tool
|
An application that allows users to create and display
event histories using 3D Lexis Pencils
|
3D Book Simulation
|
An application that displays the text from any book on an
animated "simulated book". The user must be able to open the
book and turn pages. It must also be possible to "program"
the book to flip through its pages at a pre-determined rate.
|
2 Proposal Approval
If you do not want to work on one of the pre-approved projects above,
you must get your project approved in advance.
You must submit a brief (i.e., approximately one page), typed proposal
that includes the requirements for the application.
3 Collaboration
You must write the code
entirely on your own.
You may request help on general topics from other students
and friends. You may also discuss the assignment itself with
other students in the course. However, when writing the actual code, you
must do all of the work yourself.
4 Materials
All code, pictures and sounds must be original (i.e.,
do not plagiarize and do not infringe on any copyrights). You may
use code developed/used for lectures or assignments.
5 Recommended Approach
You should probably use a SCRUM-like process even though you are
working alone. That is, you should probably always have a working
version of the product (regardless of how simple) and add features
over time. Do not spend an inordinate amount of time designing the
product and/or attempt to implement all of the features at once.
6 Presentations
All students must give a "formal", 5 minute
presentation of the final product on the "due date". This presentation should
include a discussion of the design and implementation of the product as
well as a demonstration of the product.
7 Submissions
You must submit
ALL materials associated with your
project on the "due date".
These materials must be submitted via Canvas in a .zip
file.
The root directory of the .zip
file must
contain a file named readme.txt
that explains
both how to:
- Build the application.
- Run the application.
All code and documentation written for the final project must
conform to the course style guides. Submissions that do not
conform to the course style guide and/or the above guidelines will
not be accepted.
8 Grading
Projects will be evaluated primarily based on
their technical merit (i.e., aesthetic issues will only have a
minor impact on grades). That is, the purpose of the project is to give
you the opportunity to demonstrate that you understand and can use OpenGL.